package com.xuecheng.orders.service;

import com.xuecheng.messagesdk.model.po.MqMessage;
import com.xuecheng.orders.model.dto.AddOrderDto;
import com.xuecheng.orders.model.dto.PayRecordDto;
import com.xuecheng.orders.model.dto.PayStatusDto;
import com.xuecheng.orders.model.po.XcPayRecord;

/**
 * 订单相关的service接口
 */
public interface OrderService {

    /**
     * 创建商品订单
     *
     * @param userId      用户id
     * @param addOrderDto 订单信息
     * @return 支付记录(包括二维码)
     */
    PayRecordDto createOrder(String userId, AddOrderDto addOrderDto);


    /**
     * 根据支付记录号查询支付记录
     *
     * @param payNo 支付记录号
     * @return 支付记录对象
     */
    XcPayRecord getPayRecordByPayNo(String payNo);

    /**
     * 请求支付宝查询支付结果
     *
     * @param payNo 支付记录id
     * @return 支付记录信息
     */
    PayRecordDto queryPayResult(String payNo);

    /**
     * 保存支付宝支付结果
     *
     * @param payStatusDto 支付结果信息(从支付宝查询到的信息)
     */
    void saveAliPayStatus(PayStatusDto payStatusDto);

    /**
     * 发送通知结果
     *
     * @param message 消息对象
     */
    void notifyPayResult(MqMessage message);
}
